/*----------------------------------------\ | NAME: delindex; | | PURPOSE: drop an existing index from a dataset or a table; | |-------------------------------------------| |--------------------------------------------------------------------| |---------------------------| | Usage: libname: libref; | | indata: dataset name; | | ndx: index variables | |-----------------------------| |--------------------------------------------------------------------| |---------------------------------------| | Example: %delndx(sasuser,class,rse) | | Usage: %delindex(libname=,indata=,index=, outdata=&indata); | \----------------------------------------*/ %macro delindex(libname=,indata=,index=, outdata=&indata); /*--------------------------------------------\ | Copy Right: Duo Zhou; | | Created: 8-27-2001 10:58pm; | | Purpose: Delete the index for the dataset; | \--------------------------------------------*/ %*-- check if index exists; %let libname=%upcase(&libname); %let indata=%upcase(&indata); %let index=%upcase(&index); %if &outdata eq %then %do; %let outdata=&indata; %end; %*-- Check if index exists; %let ixnames=; proc sql noprint; select distinct indxname into :ixnames separated by " " from dictionary.indexes where libname="&libname" and memname="&indata"; quit; %put ........... Existing indexes are: &ixnames; %put ........... Name of index to drop is: &index; %if %index(&ixnames, &index)=0 %then %do; %put **************** index: &index does not exist; %end; %else %do; proc sql noprint; drop index &index from &libname..&outdata; %put ................. index : &index dropped from table &libname..&indata; quit; %end; %mend delindex;